Add AI assistant guide, API field notes, and llms.txt - #32
Merged
Conversation
New documentation for humans and AI coding assistants working against the SC//HyperCore(TM) REST API: - CLAUDE.md / AGENTS.md: rules and naming traps that prevent the most common HyperCore API bugs, read automatically by AI coding tools - docs/hypercore-api-field-notes.md: empirically verified per-endpoint behavior notes (task-tag waits, response shapes, version gates) - docs/hypercore-api-reference.html: rendered, searchable reference page - llms.txt: machine-readable repo summary Content reviewed for accuracy against HyperCore 9.6.x/9.7.x clusters and audited for trademark compliance. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
- The update-status check may be wrong, and it would fail open. Rule 5 says the cluster is idle when a top-level updateStage is "COMPLETE" or empty. Your own HyperCoreDynamicBalancer in this repo checks two different fields instead: prepareStatus.state and updateStatus.masterState. If updateStage doesn't exist at the top level, .get("updateStage") returns None, which reads as "empty." The check would then report idle during a real update. This needs verifying on a live cluster during an update. The doc should also say to treat "unreachable" as "busy," since nodes reboot mid-update.
wvancollenburg
approved these changes
Sep 10, 2026
wvancollenburg
left a comment
Contributor
There was a problem hiding this comment.
Flagged update status might need some additional wording to it, but otherwise no issues.
Review feedback on #32: the documented check read a top-level updateStage field and treated an empty/absent value as idle, so it would report a cluster idle during a real update. Verified against three live clusters (9.8.3 and 9.8.4): update_status.json has no top-level updateStage. The real fields are prepareStatus.state and updateStatus.masterState — the same two this repo's HyperCoreDynamicBalancer reads, and the same masterState the HyperCore Ansible collection reads in hypercore_version.py. Docs now say idle requires both states to be COMPLETE, and spell out the fail-closed cases: a missing field, an unparseable body, no update_status.json at all on a never-updated cluster, or an unreachable node (nodes reboot mid-update, so a connection failure is a likely symptom of one). Adds the observed response shape and points at the balancer as the working implementation. Not yet observed: a mid-update payload, so no in-progress state names are documented. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
Documentation for both humans and AI coding assistants writing code against the SC//HyperCore™ REST API:
CLAUDE.md— read automatically by Claude Code and other AI coding tools; distills the six rules that prevent most HyperCore API bugs (task-tag waits, single-element array responses, fetch-then-filter, self-signed TLS, update-in-progress checks, no cluster VIP) plus a naming-trap table.AGENTS.md— pointer file so non-Claude agents pick up the same guidance.docs/hypercore-api-field-notes.md— empirically verified per-endpoint field notes collected from real integration work against HyperCore 9.6.x/9.7.x clusters: request/response shape corrections, version-gated features, labels schema, snapshot/clone gotchas, ISO and virtual-disk upload flows, CBT/snapDiff.docs/hypercore-api-reference.html— self-contained rendered reference page (searchable, light/dark theme) of the same material.llms.txt— machine-readable summary for LLM crawlers.Review done
vm_lifecycle.py,Fleet Manager/) verified against this repo.🤖 Generated with Claude Code